Many software attacks hijack the control flow of a program to transfer to attacker-injected code, or to a dangerous library function as in return-to-libc attacks, or to some existing code snippet of the program as in Return-Oriented Programming (ROP) attacks.